/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: Hua YY
 * Date: 2023 —11 —07
 * Time: 13:30
 */



/*

class  Student{
    */
/**
     * 成员属性/成员变量  ： 定义在方法外部， 类内部变量。
     * 成员变量
     * 1：静态成员变量
     * 2：普通成员变量
     *//*



    */
/**
     * 如何初始化对象的成员变量有两种
     * 1：直接在类方法，成员变量的定义中初始化，也叫就地初始化，一般不建议这么写，写上了也可以通过方法二再修改。
     * 2：在main函数中，通过对象的实例化，再用 ”  对象名.成员变量=  “ 初始化
     *//*

    public String name = "HYY" ;
    public int    age  = 18;



    */
/**
     * 成员方法
     * ☆方法中使用成员变量的时候，最好都加上this，习惯使用this，
     * 1： 静态成员方法
     * 2： 普通成员方法
     *//*

    public void eat(){
        System.out.println("+++++++++");
        */
/**
         * this的两种用法
         * this.成员变量
         * this.成员方法
         *//*


        this.name = name;//方法里，形参名与成员变量名相同时，会报错
        System.out.println(name + "干饭");
        this.show();//方法里面调用方法
    }

    public void show(){
        System.out.println("姓名：" + name +"  " + "年龄：" + age);
    }
}

*/



 //=================================================================


class Student{
    public String name ;
    public int age;
//========================================================
    /**
     * 构造方法
     * 构造方法可以有很多
     * 构造方法之间可以构成重载关系
     * 一下两个方法可以说明这个问题
     */
    public Student(){
        this.name = "zhangsan";
        this.age = 20;
        System.out.println("Student");
    }

    public Student(String name, int age){
        this.name = name;
        this.age = age;
        System.out.println("Student(String,int)");
    }


//================================================================
    public void show(){
        System.out.println("姓名：" + name+ "  " + "年龄" + age);
    }
}
public class test_11_07 {

    public static void main(String[] args) {
        /**
         *对象的产生（即实例化一个对象的时候，有两步很关键）
         * 1：为对象分配内存空间
         * 2：调用合适的构造方法
         * 注：当没有写构造方法时，java内部会自动提供一个不带参数的构造方法，值为null
         * 例如：
         * public Student(){
         *
         * }
         *
         */
        Student me = new Student();//调用不带参数的构造方法，顺便初始化成员变量
        me.show();   //amazing,打印结果如我所料，成员变量的值变了

    }

    //================================================

    /*
    public static void main2(String[] args) {
    //1：先实例化对象  "me"是实例化后的对象名
        Student me = new Student();
    //2:然后在点出来引用对象，并对对象初始化
        me.name = "hyy";
        me.age  = 20;
        me.show();//访问对象中的成员

        System.out.println("========");
        me.eat();
    }
    //OOP = 面向对象的语言

    */

//=======================================================
    /*
    public static void main1(String[] args) {

        *//**
         * 局部变量要进行初始化，不然会报错
         * 类中定义的变量不是局部变量
         * 成员变量在没有初始化的时候有默认值，基本类型都会有一个默认值
         * int 0
         * float 0.0f
         * double 0.0
         * boolean false
         * char   “\u0000”  十六进制
         * 基本引用类型 null
         *//*

        int  a ;
        System.out.println(a);
    }
     */




}
